var NfcAdapter;
var uuid = '';

function NFCInit() {
	try {
		var main = plus.android.runtimeMainActivity();
		//console.log(main);
		var Intent = plus.android.importClass('android.content.Intent');
		// console.log(Intent);
		var Activity = plus.android.importClass('android.app.Activity');
		//console.log(Activity);
		var PendingIntent = plus.android.importClass('android.app.PendingIntent');
		// console.log(PendingIntent);
		var IntentFilter = plus.android.importClass('android.content.IntentFilter');
		// console.log(IntentFilter);
		// var Uri = plus.android.importClass('android.net.Uri');
		// var Bundle = plus.android.importClass('android.os.Bundle');
		// var Handler = plus.android.importClass('android.os.Handler');
		//console.log(Handler);
		NfcAdapter = plus.android.importClass('android.nfc.NfcAdapter');
		//console.log(NfcAdapter);
		var _nfcAdapter = NfcAdapter.getDefaultAdapter(main);
		// console.log(_nfcAdapter);

		var ndef = new IntentFilter('android.nfc.action.NDEF_DISCOVERED'); //NfcAdapter.ACTION_NDEF_DISCOVERED
		// console.log(ndef);
		var tag = new IntentFilter('android.nfc.action.TAG_DISCOVERED'); //NfcAdapter.ACTION_TECH_DISCOVERED
		// console.log(tag);
		var tech = new IntentFilter('android.nfc.action.TECH_DISCOVERED');
		// console.log(tech);
		var intentFiltersArray = [ndef, tag, tech];

		var techListsArray = [
			['android.nfc.tech.Ndef'],
			['android.nfc.tech.IsoDep'],
			['android.nfc.tech.NfcA'],
			['android.nfc.tech.NfcB'],
			['android.nfc.tech.NfcF'],
			['android.nfc.tech.Nfcf'],
			['android.nfc.tech.NfcV'],
			['android.nfc.tech.NdefFormatable'],
			['android.nfc.tech.MifareClassi'],
			['android.nfc.tech.MifareUltralight']
		];

		var _intent = new Intent(main, main.getClass());
		// console.log(_intent);
		_intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);

		var pendingIntent = PendingIntent.getActivity(main, 0, _intent, 0);
		// console.log(pendingIntent);

		if (_nfcAdapter == null) {} else if (_nfcAdapter.isEnabled() == false) {} else {
			// nfcAdapter.disableForegroundDispatch(main);
			_nfcAdapter.enableForegroundDispatch(main, pendingIntent, IntentFilter, techListsArray);
		} 
	} catch (e) {
		//TODO handle the exception
	}
};

function NFCReadUID() {
	let promise = new Promise(function(resolve, reject) {
		var main = plus.android.runtimeMainActivity();
		var _intent = main.getIntent();
		var _action = _intent.getAction();
		if (uuid == _intent.__UUID__) {
		   resolve(false)
		  }else if (NfcAdapter.ACTION_NDEF_DISCOVERED == _action || NfcAdapter.ACTION_TAG_DISCOVERED == _action || NfcAdapter.ACTION_TECH_DISCOVERED ==
			_action) {
				uuid = _intent.__UUID__
			var Tag = plus.android.importClass('android.nfc.Tag');
			var tagFromIntent = _intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
			var bind_code = _intent.getByteArrayExtra(NfcAdapter.EXTRA_ID);
			
			bind_code = Bytes2HexString(bind_code);
			resolve(bind_code)
			// console.log("bind_code====:", bind_code)
			//console.log(this.UID);
		}else{
			resolve(false)
		}
		
	});
	return promise

};
//将byte[] 转为Hex，
function Bytes2HexString(arrBytes) {
	var str = '';
	for (var i = 0; i < arrBytes.length; i++) {
		var tmp;
		var num = arrBytes[i];
		if (num < 0) {
			//Java中数值是以补码的形式存在的，应用程序展示的十进制是补码对应真值。补码的存在主要为了简化计算机底层的运算，将减法运算直接当加法来做
			tmp = (255 + num + 1).toString(16);
		} else {
			tmp = num.toString(16);
		}
		if (tmp.length == 1) {
			tmp = '0' + tmp;
		}
		str += tmp;
	}
	return str;
};
export default {
	NFCInit,
	NFCReadUID
}
